/*
Copyright 2022 The Numaproj Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1alpha1

import (
	corev1 "k8s.io/api/core/v1"
)

type GetVertexPodSpecReq struct {
	ISBSvcType              ISBSvcType                  `protobuf:"bytes,1,opt,name=isbSvcType"`
	Image                   string                      `protobuf:"bytes,2,opt,name=image"`
	PullPolicy              corev1.PullPolicy           `protobuf:"bytes,3,opt,name=pullPolicy,casttype=k8s.io/api/core/v1.PullPolicy"`
	Env                     []corev1.EnvVar             `protobuf:"bytes,4,rep,name=env"`
	SideInputsStoreName     string                      `protobuf:"bytes,5,opt,name=sideInputsStoreName"`
	ServingSourceStreamName string                      `protobuf:"bytes,6,opt,name=servingSourceStreamName"`
	PipelineSpec            PipelineSpec                `protobuf:"bytes,7,opt,name=pipelineSpec"`
	DefaultResources        corev1.ResourceRequirements `protobuf:"bytes,8,opt,name=defaultResources"`
}

type GetDaemonDeploymentReq struct {
	ISBSvcType       ISBSvcType                  `protobuf:"bytes,1,opt,name=isbSvcType"`
	Image            string                      `protobuf:"bytes,2,opt,name=image"`
	PullPolicy       corev1.PullPolicy           `protobuf:"bytes,3,opt,name=pullPolicy,casttype=k8s.io/api/core/v1.PullPolicy"`
	Env              []corev1.EnvVar             `protobuf:"bytes,4,rep,name=env"`
	DefaultResources corev1.ResourceRequirements `protobuf:"bytes,5,opt,name=defaultResources"`
}

type GetJetStreamStatefulSetSpecReq struct {
	ServiceName                string                      `protobuf:"bytes,1,rep,name=serviceName"`
	Labels                     map[string]string           `protobuf:"bytes,2,rep,name=labels"`
	NatsImage                  string                      `protobuf:"bytes,3,opt,name=natsImage"`
	MetricsExporterImage       string                      `protobuf:"bytes,4,opt,name=metricsExporterImage"`
	ConfigReloaderImage        string                      `protobuf:"bytes,5,opt,name=configReloaderImage"`
	ClusterPort                int32                       `protobuf:"bytes,6,opt,name=clusterPort"`
	ClientPort                 int32                       `protobuf:"bytes,7,opt,name=clientPort"`
	MonitorPort                int32                       `protobuf:"bytes,8,opt,name=monitorPort"`
	MetricsPort                int32                       `protobuf:"bytes,9,opt,name=metricsPort"`
	ServerAuthSecretName       string                      `protobuf:"bytes,10,opt,name=serverAuthSecretName"`
	ServerEncryptionSecretName string                      `protobuf:"bytes,11,opt,name=serverEncryptionSecretName"`
	ConfigMapName              string                      `protobuf:"bytes,12,opt,name=configMapName"`
	PvcNameIfNeeded            string                      `protobuf:"bytes,13,opt,name=pvcNameIfNeeded"`
	StartCommand               string                      `protobuf:"bytes,14,opt,name=startCommand"`
	DefaultResources           corev1.ResourceRequirements `protobuf:"bytes,15,opt,name=defaultResources"`
}

type GetJetStreamServiceSpecReq struct {
	Labels      map[string]string `protobuf:"bytes,1,rep,name=labels"`
	ClusterPort int32             `protobuf:"bytes,2,opt,name=clusterPort"`
	ClientPort  int32             `protobuf:"bytes,3,opt,name=clientPort"`
	MonitorPort int32             `protobuf:"bytes,4,opt,name=monitorPort"`
	MetricsPort int32             `protobuf:"bytes,5,opt,name=metricsPort"`
}

type GetSideInputDeploymentReq struct {
	ISBSvcType       ISBSvcType                  `protobuf:"bytes,1,opt,name=isbSvcType"`
	Image            string                      `protobuf:"bytes,2,opt,name=image"`
	PullPolicy       corev1.PullPolicy           `protobuf:"bytes,3,opt,name=pullPolicy,casttype=k8s.io/api/core/v1.PullPolicy"`
	Env              []corev1.EnvVar             `protobuf:"bytes,4,rep,name=env"`
	DefaultResources corev1.ResourceRequirements `protobuf:"bytes,5,opt,name=defaultResources"`
}

type GetMonoVertexDaemonDeploymentReq struct {
	Image            string                      `protobuf:"bytes,1,opt,name=image"`
	PullPolicy       corev1.PullPolicy           `protobuf:"bytes,2,opt,name=pullPolicy,casttype=k8s.io/api/core/v1.PullPolicy"`
	Env              []corev1.EnvVar             `protobuf:"bytes,3,rep,name=env"`
	DefaultResources corev1.ResourceRequirements `protobuf:"bytes,4,opt,name=defaultResources"`
}

type GetMonoVertexPodSpecReq struct {
	Image            string                      `protobuf:"bytes,1,opt,name=image"`
	PullPolicy       corev1.PullPolicy           `protobuf:"bytes,2,opt,name=pullPolicy,casttype=k8s.io/api/core/v1.PullPolicy"`
	Env              []corev1.EnvVar             `protobuf:"bytes,3,rep,name=env"`
	DefaultResources corev1.ResourceRequirements `protobuf:"bytes,4,opt,name=defaultResources"`
}

type GetServingPipelineResourceReq struct {
	ISBSvcConfig     BufferServiceConfig         `protobuf:"bytes,1,opt,name=isbSvcConfig"`
	Image            string                      `protobuf:"bytes,2,opt,name=image"`
	PullPolicy       corev1.PullPolicy           `protobuf:"bytes,3,opt,name=pullPolicy,casttype=k8s.io/api/core/v1.PullPolicy"`
	Env              []corev1.EnvVar             `protobuf:"bytes,4,rep,name=env"`
	DefaultResources corev1.ResourceRequirements `protobuf:"bytes,5,opt,name=defaultResources"`
}
